Spring Security(18)

您所在的位置:网站首页 sec:authorize ifAllGranted Spring Security(18)

Spring Security(18)

2024-03-09 16:59| 来源: 网络整理| 查看: 265

Jsp标签

 

目录

1.1     authorize

1.2     authentication

1.3     accesscontrollist

 

       Spring Security也有对Jsp标签的支持的标签库。其中一共定义了三个标签:authorize、authentication和accesscontrollist。其中authentication标签是用来代表当前Authentication对象的,我们可以利用它来展示当前Authentication对象的相关信息。另外两个标签是用于权限控制的,可以利用它们来包裹需要保护的内容,通常是超链接和按钮。

       如果需要使用Spring Security的标签库,那么首先我们应当将对应的jar包spring-security-taglibs-xxx.jar放入WEB-INF/lib下;其次我们需要在页面上引入Spring Security的标签库。

       接下来就可以在页面上自由的使用Spring Security的标签库提供的标签了。

 

1.1     authorize

       authorize是用来判断普通权限的,通过判断用户是否具有对应的权限而控制其所包含内容的显示,其可以指定如下属性。

       1、access

       access属性需要使用表达式来判断权限,当表达式的返回结果为true时表示拥有对应的权限。

   

      admin page

   

       需要注意的是因为access属性是使用表达式的,所以我们必须确保ApplicationContext中存在一个WebSecurityExpressionHandler,最简单的办法就是直接使用NameSpace,通过设置http元素的use-expressions="true"让NameSpace自动为我们创建一个WebSecurityExpressionHandler。

 

       2、ifAllGranted、ifAnyGranted和ifNotGranted

       这三个属性的用法类似,它们都接收以逗号分隔的权限列表,且不能使用表达式。ifAllGranted表示需要包含所有的权限,ifAnyGranted表示只需要包含其中的任意一个即可,ifNotGranted表示不能包含指定的任意一个权限。

   

   

      admin

   

   

   hello

   

   

      user

   

 

       3、url

       url表示如果用户拥有访问指定url的权限即表示可以显示authorize标签包含的内容。

   

   

      admin

   

 

       4、method

       method属性是配合url属性一起使用的,表示用户应当具有指定url指定method访问的权限,method的默认值为GET,可选值为http请求的7种方法。

   

   

      admin

   

       限制访问方法是通过http元素下的intercept-url元素的method属性来指定的,如:

     

 

       5、var

       用于指定将权限鉴定的结果存放在pageContext的哪个属性中。该属性的主要作用是对于在同一页面的多个地方具有相同权限鉴定时,我们只需要定义一次,然后将鉴定结果以var指定的属性名存放在pageContext中,其它地方可以直接使用之前的鉴定结果。

   

      只有通过登录界面进行登录的用户才能看到1。

   

   上述权限的鉴定结果是:${isFullyAuthenticated }

   

   

   ${username }

 

scope属性

       与var属性一起使用,用于指定存放获取的结果的属性名的作用范围,默认我pageContext。Jsp中拥有的作用范围都进行进行指定。

 

htmlScape属性

       表示是否需要将html进行转义。默认为true。

 

1.3     accesscontrollist

       accesscontrollist标签是用于鉴定ACL权限的。其一共定义了三个属性:hasPermission、domainObject和var,其中前两个是必须指定的。hasPermission属性用于指定以逗号分隔的权限列表;domainObject用于指定对应的域对象;而var则是用以将鉴定的结果以指定的属性名存入pageContext中,以供同一页面的其它地方使用。需要注意的是使用accesscontrollist标签时ApplicationContext中必须存在一个PermissionEvaluator bean,因为accesscontrollist标签就是通过PermissionEvaluator来鉴定对应的权限的。如果我们正在使用Spring Security的ACL模块,那么PermissionEvaluator通常就对应着AclPermissionEvaluator。此外,如果domainObject属性指定的domainObject为null则默认认为是有权限的,否则如果当前Authentication对象为null则默认认为是没有权限的。

   

      如果当前Authentication对指定的domainObject拥有指定的hasPermission则将可以看到这部分内容。

   

 

(注:本文是基于Spring Security3.1.6所写)

 

(注:原创文章,转载请注明出处。原文地址:http://haohaoxuexi.iteye.com/blog/2263097)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3